package com.ytjj.qmyx.mall.model.response;

import com.ytjj.qmyx.mall.model.Orders;
import com.ytjj.qmyx.mall.model.UsersRealName;
import com.ytjj.qmyx.users.model.DefaultAddressDto;
import lombok.Data;
import org.springframework.beans.BeanUtils;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 订单响应
 *
 *
 * @version 1.0
 *
 */
@Data
public class OrderResponse implements Serializable {

    /**
     * 订单号
     */
    private Integer orderId;

    /**
     * 订单编号
     */
    private String orderNo;

    /**
     * 总价
     */
    private BigDecimal realTotalMoney;

    /**
     * 总原价
     */
    private BigDecimal totalMoney;

    /**
     * 优惠价格
     */
    private BigDecimal reducedPrice;

    /**
     * 活动类型
     *
     */
    private String activityType;

    /**
     * 是否大图标志
     */
    private Integer recImgFlag;

    /**
     * 活动标识：积分/红包/抵扣券
     *
     */
    private BigDecimal activityMax;

    /**
     * 活动标识：积分/红包/抵扣券
     *
     */
    private BigDecimal activityMin;

    /**
     * 订单详情
     */
    private List<OrderInfoResponse> orderInfoList;

    /**
     * 默认地址
     */
    private DefaultAddressDto address;

    /**
     * 收货地址
     */
    private String addressText;

    /**
     * 收货人
     */
    private String userName;

    /**
     * 收货手机号
     */
    private String tel;

    /**
     * 支付类型列表
     */
    private List<String> payTypeList;

    /**
     * 运费
     */
    private BigDecimal freight;

    /**
     * 下单时间
     */
    private Date createTime;

    /**
     * 支付方式
     */
    private String paySource;

    /**
     * 支付类型
     */
    private String payType;

    /**
     * 支付时间
     */
    private Date payTime;

    /**
     * 类型
     */
    private String type;

    /**
     * 支付状态
     */
    private Integer payStatus;

    /**
     * 积分
     *
     */
    private Integer score;

    /**
     * 是否领取
     *
     */
    private Byte isReceive;

    /**
     * 随机生成的领取红包金额
     *
     */
    private BigDecimal amount;

    /**
     * 用户获取金额数
     */
    private BigDecimal walletMoney;

    /**
     * 是否直接购买
     *
     */
    private Integer isDirectbuy;

    /**
     * 各种优惠价格
     */
    private Map<String,Object> discountType;

    /**
     * 商品状态
     */
    private Integer productStatus;

    private String orderStatus;

    /**
     * 是否有物流信息
     */
    private Integer expressFlag;

    /**
     * 退货标志
     * 0-正常订单  1-已发起退货
     */
    private Integer returnFlag;

    /**
     * 是否是严选官
     */
    private Integer isQuality;

    /**
     *订购人信息
     */
    private UsersRealName usersRealName;

    /**
     * 商品类型 1国内 2国外
     */
    private Integer productType;

    /**
     * 支付过期时间
     */
    private Date payExpirationTime;

    /**
     * 发货过期时间
     */
    private Date deliveryExpirationTime;

    private String serviceNo;//服务单号(唯一标识)

    private Date completeTime;//收货时间(发货时间7天后)

    private Boolean applyReturnFlag;//能否申请售后标识 true

    private String orderDelay;//订单延期备注

    /**
     * 交易关闭原因
     * @return
     */
    private String closeRemarks;

    /**
     * 总运费
     */
    private BigDecimal freights;

    //商品价格加总运费
    private BigDecimal productPriceAndFreights;

    /**
     * 快递详情
     */
    private List<Object> deliveryInfo;

    /**
     * 快递详细报文
     */
    private Object deliveryResp;

    /**
     * 好评率
     *
     */
    private String goodRatio;

    /**
     * 商品平台
     */
    private String platformData;

    /**
     * 子订单状态
     */
    private String orderInfoStatus;

    /**
     * 是否支付
     */
    private Integer isPay;

    /**
     * 微信支付开关 0->下线 1->上线
     */
    private String wxPayFlag;

    /**
     * 微信支付2开关 0->下线 1->上线
     */
    private String wxPayFlag2;

    /**
     * 支付宝支付开关 ->0 下线 1->上线
     */
    private String aliPayFlag;

    /**
     * 微信支付备用切换开关 0->关闭 1->开启
     */
    private String wxPayCheckFlag;

    /**
     * 支付宝支付备用切换开关 ->0 下线 1->上线
     */
    private String aliPayCheckFlag;


    public OrderResponse(){}

    public OrderResponse(Orders orders){
        BeanUtils.copyProperties(orders,this);
        this.orderId = orders.getId();

    }
}
